n = int(input())
a = [0] + list(map(int, input().split()))
dp1 = [0] * (n + 1)  # 初始化dp1数组，dp[i]表示以第i个数字结尾的最长上升子序列的长度

for i in range(1, n + 1):  # 遍历每一个数字
    dp1[i] = 1  # 初始化dp1[i]的值为1，因为最小的上升子序列包含它自己
    for j in range(1, i):  # 遍历i前面的所有数字
        if a[j] < a[i]:  # 如果找到一个小于a[i]的数
            dp1[i] = max(dp1[i], dp1[j] + 1)  # 更新dp[i]的值

print(max(dp1))  # 输出最长上升子序列的长度

# 最长下降子序列
# j表示i后面那个
# dp2[i]=max(dp2[j])+1,j>i,a[j]<a[i]
dp2=[0]+[1]*n
for i in range(n,0,-1):
    for j in range(i+1,n+1):
        if a[i]>a[j]:
            dp2[i]=max(dp2[i],dp2[j]+1)

# 合唱队列
ans=max(dp1[i]+dp2[i]-1 for i in range(1,n+1))
print(n-ans)